package com.zgx.plus.generator.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "gen_table")
public class GenTable extends Model<GenTable> {
    /**
     * 编号
     */
    @TableId(value = "table_id", type = IdType.AUTO)
    private Long tableId;

    /**
     * 表名称
     */
    @TableField(value = "table_name")
    private String tableName;

    /**
     * 表描述
     */
    @TableField(value = "table_comment")
    private String tableComment;

    /**
     * 关联子表的表名
     */
    @TableField(value = "sub_table_name")
    private String subTableName;

    /**
     * 子表关联的外键名
     */
    @TableField(value = "sub_table_fk_name")
    private String subTableFkName;

    /**
     * 实体类名称
     */
    @TableField(value = "class_name")
    private String className;

    /**
     * 使用的模板（crud单表操作 tree树表操作）
     */
    @TableField(value = "tpl_category")
    private String tplCategory;

    /**
     * 生成包路径
     */
    @TableField(value = "package_name")
    private String packageName;

    /**
     * 生成模块名
     */
    @TableField(value = "module_name")
    private String moduleName;

    /**
     * 生成业务名
     */
    @TableField(value = "business_name")
    private String businessName;

    /**
     * 生成功能名
     */
    @TableField(value = "function_name")
    private String functionName;

    /**
     * 生成功能作者
     */
    @TableField(value = "function_author")
    private String functionAuthor;

    /**
     * 生成代码方式（0zip压缩包 1自定义路径）
     */
    @TableField(value = "gen_type")
    private String genType;

    /**
     * 生成路径（不填默认项目路径）
     */
    @TableField(value = "gen_path")
    private String genPath;

    /**
     * 其它生成选项
     */
    @TableField(value = "options")
    private String options;

    /**
     * 创建者
     */
    @TableField(value = "create_by")
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private Date createTime;

    /**
     * 更新者
     */
    @TableField(value = "update_by")
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    private Date updateTime;

    /**
     * 备注
     */
    @TableField(value = "remark")
    private String remark;

    /**
     * 主键信息
     */
    @TableField(exist = false)
    private GenTableColumn pkColumn;

    /**
     * 子表信息
     */
    @TableField(exist = false)
    private GenTable subTable;

    /**
     * 生成的表字段
     */
    @TableField(exist = false)
    private List<GenTableColumn> columns;

    /**
     * 搜索值
     */
    @TableField(exist = false)
    private String searchValue;

    /**
     * 请求参数
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private Map<String, Object> params;

    /**
     * 树编码字段
     */
    @TableField(exist = false)
    private String treeCode;

    /**
     * 树父编码字段
     */
    @TableField(exist = false)
    private String treeParentCode;

    /**
     * 树名称字段
     */
    @TableField(exist = false)
    private String treeName;

    /**
     * 上级菜单ID字段
     */
    @TableField(exist = false)
    private String parentMenuId;

    /**
     * 上级菜单名称字段
     */
    @TableField(exist = false)
    private String parentMenuName;
}
